#ifndef TEMPERATURECHART_H
#define TEMPERATURECHART_H

#include <QWidget>
#include <QList>
#include <QPainter>
#include <QFontMetrics>
#include "weather_json.h" // 假设这是包含Forecast定义的头文件
#include <cmath>  // 添加cmath头文件
#include <QtMath>  // 包含Qt数学函数头文件
#include <algorithm>    // 用于std::min_element和std::max_element

class TemperatureChart : public QWidget
{
    Q_OBJECT
public:
    explicit TemperatureChart(QWidget *parent = nullptr);
    
    // 设置温度数据
    void setTemperatureData(const QList<Forecast> &forecastList);
    
protected:
    void paintEvent(QPaintEvent *event) override;
    
private:
    // 温度数据
    QList<double> highTemps;  // 最高温度列表
    QList<double> lowTemps;   // 最低温度列表
    QList<QString> dates;     // 日期列表
    
    // 计算纵坐标范围
    void calculateYRange(double &min, double &max) const;
    
    // 绘制坐标轴
    void drawAxes(QPainter &painter);
    
    // 绘制温度曲线
    void drawTemperatureCurve(QPainter &painter);
    
    // 绘制填充区域
    void drawFillArea(QPainter &painter);
    
    // 绘制温度标签
    void drawTemperatureLabels(QPainter &painter);
};

#endif // TEMPERATURECHART_H
